package com.hwua.service;

import com.hwua.domain.Car;
import com.hwua.exception.RentCarFailedException;

import java.util.List;

/**
 * 租车业务接口
 * @author Administrator
 */
public interface CarService {
    /**
     * 根据汽车编号租车
     *
     * @param carId 汽车编号
     * @return
     */
    List<Car> rentCarById(String userName,int carId);

    /**
     * 按照租车价格降序/升序排列
     *@param num 表示从键盘录入的数字，1表示降序，2表示升序
     * @return
     */
    List<Car> sortByPrice(int num);



    /**
     * 根据id查找汽车
     *
     * @param id  可以是汽车id 类型id  品牌id
     * @param sign 作为标记，表面传入的是汽车id 、类型id 还是品牌id
     * @return
     */
    List<Car> findCarById(int id,String sign);


    /**
     * 查看所有汽车
     * @return
     */
    List<Car> findAllCar();

    /**
     * 查看用户自己的租车记录
     * @return
     */
    List<Car> findRecordByUser(String userName);

    /**
     * 根据汽车编号还车
     * @param userName 传入的当前用户名
     * @param carId 汽车编号
     * @param choose 是否选择打折
     * @return
     */
    List<Car>  returnCarById(String userName,int carId,int choose);


    /**
     * 添加汽车
     * @param brandId
     * @param typeId
     * @param carName
     * @param carNumber
     * @param carRemark
     * @param color
     * @param price
     * @param dailyRent
     * @param rentStatus
     * @param putAwayStatus
     * @return
     */
    boolean addCar(int brandId,int typeId,String carName,String carNumber,String carRemark,String color,long price,
                   double dailyRent,int rentStatus,int putAwayStatus);

    /**
     * 根据汽车编号修改汽车每日租金
     * @param id 汽车id
     * @param dailyRent  每日租金
     * @return
     */
    List<Car> alterDailyRentById(int id,double dailyRent);
    /**
     * 根据汽车编号修改汽车每日租金
     * @param id 汽车id
     * @param  putAwayStatus 上架状态
     * @return
     */
    List<Car> alterPutAwayStatusById(int id,int putAwayStatus);
    /**
     * 查看全部租车记录
     * @return
     */
    List<Car> findRecord();

    /**
     * 根据用户编号查看指定租车记录
     * @param id
     * @return
     */
    List<Car> findRecordByUserId(int id);
    /**
     * 根据汽车编号查看指定租车记录
     * @param id
     * @return
     */
    List<Car> findRecordByCarId(int id);

}
